class MethodMissingMixin(object):
    def __getattribute__(self, attr):
        """
        重写属性访问方法，用于处理不存在的属性或方法调用
        """
        try:
            # 尝试正常获取属性
            return object.__getattribute__(self, attr)
        except:
            # 当属性不存在时，创建一个代理对象来处理方法调用
            class MethodMissing(object):
                def __init__(self, wrapped, method):
                    self.__wrapped__ = wrapped  # 保存包装的对象
                    self.__method__ = method  # 保存要调用的方法名

                def __call__(self, *args, **kwargs):
                    # 当代理对象被调用时，转发给 wrapped 对象的 method_missing 方法处理
                    return self.__wrapped__.method_missing(self.__method__, *args, **kwargs)

            # 返回代理对象
            return MethodMissing(self, attr)

    def method_missing(self, *args, **kwargs):
        """
        当调用不存在的方法时会执行此方法
        子类应该重写此方法来实现自定义的行为

        参数:
            *args: 位置参数
            **kwargs: 关键字参数

        异常:
            NotImplementedError: 当子类没有实现此方法时抛出
        """
        raise NotImplementedError(str(self.__wrapped__) + " 'method_missing' method has not been implemented.")
